/*
 * IndiceInvertido.h
 *
 *  Created on: 25/09/2011
 *      Author: emma
 */

#ifndef INDICEINVERTIDO_H_
#define INDICEINVERTIDO_H_
#include "../DAWG/DAWG.h"
#include "../archivador/ArchivoIndice.h"
#include "../archivador/ArchivoLexico.h"
#include "RegistroIndice.h"
#include "RegistroLexico.h"
#include "RegistroId.h"
class IndiceInvertido {
private:
	DAWG* arbol;
	ArchivoIndice* archivoIndice;
	ArchivoLexico* archivoLexico;
public:

	IndiceInvertido();

	//Agrega un registro indice al indice invertido asociando con el termino
	void agregarRegistro(string termino, RegistroIndice* unRegistroIndice);

	//Devuelve el registro indice asociado al termino (de memoria)
	RegistroIndice* obtenerRegistro(string termino);

	//Devuelve el registro indice asociado al termino (de disco)
	RegistroIndice* obtenerRegistroIndice(string termino);

	//duvelve true si el termino ya esta en el indice
	bool esta(string termino);

	void almacenar();

	void cargar();

	void destruir();

	virtual ~IndiceInvertido();
};

#endif /* INDICEINVERTIDO_H_ */
